#!/bin/bash

# 网络调试助手二进制构建脚本

set -e

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

echo -e "${BLUE}🔨 构建网络调试助手二进制版本${NC}"

# 项目目录
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
BACKEND_DIR="$PROJECT_DIR/backend"
FRONTEND_DIR="$PROJECT_DIR/front"
DIST_DIR="$PROJECT_DIR/dist"

echo -e "${YELLOW}📁 项目目录: $PROJECT_DIR${NC}"

# 清理之前的构建
if [ -d "$DIST_DIR" ]; then
    echo -e "${YELLOW}🧹 清理之前的构建文件${NC}"
    rm -rf "$DIST_DIR"
fi

# 安装构建依赖
echo -e "${YELLOW}📦 安装构建依赖${NC}"
cd "$BACKEND_DIR"
pip3 install -r requirements.txt

# 构建前端
echo -e "${YELLOW}🏗️  构建前端项目${NC}"
cd "$FRONTEND_DIR"
npm run build

# 检查构建结果
if [ ! -d "$BACKEND_DIR/static" ]; then
    echo -e "${RED}❌ 前端构建失败，静态文件目录不存在${NC}"
    exit 1
fi

echo -e "${GREEN}✅ 前端构建完成${NC}"

# 构建二进制文件
echo -e "${YELLOW}🔨 构建Python二进制文件${NC}"
cd "$BACKEND_DIR"

# 使用PyInstaller构建
pyinstaller net-tools.spec --clean

# 检查构建结果
if [ -d "$BACKEND_DIR/dist/net-tools" ]; then
    echo -e "${GREEN}✅ 二进制构建完成${NC}"
    
    # 移动到项目根目录
    mv "$BACKEND_DIR/dist/net-tools" "$DIST_DIR"
    
    # 显示构建信息
    echo -e "${BLUE}📄 构建信息:${NC}"
    ls -la "$DIST_DIR"
    echo ""
    echo -e "${BLUE}📏 文件大小:${NC}"
    du -sh "$DIST_DIR"/*
    
    echo -e "${GREEN}🎉 构建完成！${NC}"
    echo -e "${BLUE}测试运行: $DIST_DIR/net-tools${NC}"
else
    echo -e "${RED}❌ 二进制构建失败${NC}"
    exit 1
fi